package com.fw.service.persistence.dto;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;

import org.springframework.data.jpa.domain.AbstractPersistable;

@Entity
public class MerchantProfile extends AbstractPersistable<Long> {

    public static final String STATUS_ACTIVE = "MerchantProfile.STATUS_ACTIVE";
    public static final String STATUS_SUSPENED = "MerchantProfile.STATUS_SUSPENED";
    public static final String STATUS_INACTIVE = "MerchantProfile.STATUS_INACTIVE";
    public static final String STATUS_CLOSED = "MerchantProfile.STATUS_CLOSED";

    private static final long serialVersionUID = 1L;

    private Long logoId;
    private String merchantId;
    private String merchantStatus;
    private String merchantNameEn;
    private String merchantNameTh;
    private String companyNameEn;
    private String companyNameTh;
    private String merchantServiceType;
    private String mccCode;
    private String businessRegNumber;
    private String statementName;
    private String countryDomicile;
    private String countryRegion;
    private String businessAddress;
    private String mailingAddress;
    private String url;
    private String faxNumber;
    private String taxId;
    private String enquiryNumber;
    private String contact1Name;
    private String contact1Phone;
    private String contact1Mobile;
    private String contact1Email;
    private String contact2Name;
    private String contact2Phone;
    private String contact2Mobile;
    private String contact2Email;
    private String contact3Name;
    private String contact3Phone;
    private String contact3Mobile;
    private String contact3Email;
    private String contact4Name;
    private String contact4Phone;
    private String contact4Mobile;
    private String contact4Email;
    private String createBy;
    private String createDate;
    private String lastUpdateBy;
    private String lastUpdateDate;
    private Boolean isTestMerchant;

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "MERCHANT_PARENTMERCHANT", joinColumns = { @JoinColumn(name = "MERCHANT_ID", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "PARENTMERCHANT_ID", nullable = false, updatable = false) })
    private Set<ParentMerchant> parentMerchants = new HashSet<ParentMerchant>();

    public Long getLogoId() {
	return logoId;
    }

    public void setLogoId(Long logoId) {
	this.logoId = logoId;
    }

    public String getMerchantId() {
	return merchantId;
    }

    public void setMerchantId(String merchantId) {
	this.merchantId = merchantId;
    }

    public String getMerchantStatus() {
	return merchantStatus;
    }

    public void setMerchantStatus(String merchantStatus) {
	this.merchantStatus = merchantStatus;
    }

    public String getMerchantNameEn() {
	return merchantNameEn;
    }

    public void setMerchantNameEn(String merchantNameEn) {
	this.merchantNameEn = merchantNameEn;
    }

    public String getMerchantNameTh() {
	return merchantNameTh;
    }

    public void setMerchantNameTh(String merchantNameTh) {
	this.merchantNameTh = merchantNameTh;
    }

    public String getCompanyNameEn() {
	return companyNameEn;
    }

    public void setCompanyNameEn(String companyNameEn) {
	this.companyNameEn = companyNameEn;
    }

    public String getCompanyNameTh() {
	return companyNameTh;
    }

    public void setCompanyNameTh(String companyNameTh) {
	this.companyNameTh = companyNameTh;
    }

    public String getMerchantServiceType() {
	return merchantServiceType;
    }

    public void setMerchantServiceType(String merchantServiceType) {
	this.merchantServiceType = merchantServiceType;
    }

    public String getMccCode() {
	return mccCode;
    }

    public void setMccCode(String mccCode) {
	this.mccCode = mccCode;
    }

    public String getBusinessRegNumber() {
	return businessRegNumber;
    }

    public void setBusinessRegNumber(String businessRegNumber) {
	this.businessRegNumber = businessRegNumber;
    }

    public String getStatementName() {
	return statementName;
    }

    public void setStatementName(String statementName) {
	this.statementName = statementName;
    }

    public String getCountryDomicile() {
	return countryDomicile;
    }

    public void setCountryDomicile(String countryDomicile) {
	this.countryDomicile = countryDomicile;
    }

    public String getCountryRegion() {
	return countryRegion;
    }

    public void setCountryRegion(String countryRegion) {
	this.countryRegion = countryRegion;
    }

    public String getBusinessAddress() {
	return businessAddress;
    }

    public void setBusinessAddress(String businessAddress) {
	this.businessAddress = businessAddress;
    }

    public String getMailingAddress() {
	return mailingAddress;
    }

    public void setMailingAddress(String mailingAddress) {
	this.mailingAddress = mailingAddress;
    }

    public String getUrl() {
	return url;
    }

    public void setUrl(String url) {
	this.url = url;
    }

    public String getFaxNumber() {
	return faxNumber;
    }

    public void setFaxNumber(String faxNumber) {
	this.faxNumber = faxNumber;
    }

    public String getTaxId() {
	return taxId;
    }

    public void setTaxId(String taxId) {
	this.taxId = taxId;
    }

    public String getEnquiryNumber() {
	return enquiryNumber;
    }

    public void setEnquiryNumber(String enquiryNumber) {
	this.enquiryNumber = enquiryNumber;
    }

    public String getContact1Name() {
	return contact1Name;
    }

    public void setContact1Name(String contact1Name) {
	this.contact1Name = contact1Name;
    }

    public String getContact1Phone() {
	return contact1Phone;
    }

    public void setContact1Phone(String contact1Phone) {
	this.contact1Phone = contact1Phone;
    }

    public String getContact1Mobile() {
	return contact1Mobile;
    }

    public void setContact1Mobile(String contact1Mobile) {
	this.contact1Mobile = contact1Mobile;
    }

    public String getContact1Email() {
	return contact1Email;
    }

    public void setContact1Email(String contact1Email) {
	this.contact1Email = contact1Email;
    }

    public String getContact2Name() {
	return contact2Name;
    }

    public void setContact2Name(String contact2Name) {
	this.contact2Name = contact2Name;
    }

    public String getContact2Phone() {
	return contact2Phone;
    }

    public void setContact2Phone(String contact2Phone) {
	this.contact2Phone = contact2Phone;
    }

    public String getContact2Mobile() {
	return contact2Mobile;
    }

    public void setContact2Mobile(String contact2Mobile) {
	this.contact2Mobile = contact2Mobile;
    }

    public String getContact2Email() {
	return contact2Email;
    }

    public void setContact2Email(String contact2Email) {
	this.contact2Email = contact2Email;
    }

    public String getContact3Name() {
	return contact3Name;
    }

    public void setContact3Name(String contact3Name) {
	this.contact3Name = contact3Name;
    }

    public String getContact3Phone() {
	return contact3Phone;
    }

    public void setContact3Phone(String contact3Phone) {
	this.contact3Phone = contact3Phone;
    }

    public String getContact3Mobile() {
	return contact3Mobile;
    }

    public void setContact3Mobile(String contact3Mobile) {
	this.contact3Mobile = contact3Mobile;
    }

    public String getContact3Email() {
	return contact3Email;
    }

    public void setContact3Email(String contact3Email) {
	this.contact3Email = contact3Email;
    }

    public String getContact4Name() {
	return contact4Name;
    }

    public void setContact4Name(String contact4Name) {
	this.contact4Name = contact4Name;
    }

    public String getContact4Phone() {
	return contact4Phone;
    }

    public void setContact4Phone(String contact4Phone) {
	this.contact4Phone = contact4Phone;
    }

    public String getContact4Mobile() {
	return contact4Mobile;
    }

    public void setContact4Mobile(String contact4Mobile) {
	this.contact4Mobile = contact4Mobile;
    }

    public String getContact4Email() {
	return contact4Email;
    }

    public void setContact4Email(String contact4Email) {
	this.contact4Email = contact4Email;
    }

    public String getCreateBy() {
	return createBy;
    }

    public void setCreateBy(String createBy) {
	this.createBy = createBy;
    }

    public String getCreateDate() {
	return createDate;
    }

    public void setCreateDate(String createDate) {
	this.createDate = createDate;
    }

    public String getLastUpdateBy() {
	return lastUpdateBy;
    }

    public void setLastUpdateBy(String lastUpdateBy) {
	this.lastUpdateBy = lastUpdateBy;
    }

    public String getLastUpdateDate() {
	return lastUpdateDate;
    }

    public void setLastUpdateDate(String lastUpdateDate) {
	this.lastUpdateDate = lastUpdateDate;
    }

    public Boolean getIsTestMerchant() {
	return isTestMerchant;
    }

    public void setIsTestMerchant(Boolean isTestMerchant) {
	this.isTestMerchant = isTestMerchant;
    }

    public Set<ParentMerchant> getParentMerchants() {
	return parentMerchants;
    }

    public void setParentMerchants(Set<ParentMerchant> parentMerchants) {
	this.parentMerchants = parentMerchants;
    }

}
